package 集合;
/*
    1.集合主要分为两组：单列集合和双列集合
    2.Collection 接口有两个重要的子接口 List Set ，它们的实现子类都是三列集合
    3.Map 接口的实现子类，是双列集合，存放的是 Key - Value
    Collection接口的实现类的特点：
        1.Collection实现子类可以存放多个元素，每个元素可以是Object
        2.有些Collection的实现类，可以存放重复的元素，有些不可以
        3.有些Collection的实现类，有些是有序的(List)，有序不是是有序(Set)
        4.Collection接口没有直接的实现子类，都是通过它的子类接口Set和List来实现的

    集合的选型：
        1.先判断存储的类型：一组对象或者一组键值对（即单例还是双列）
        2.单列(一组对象)：Collection接口
            允许重复：List
                增删多：LinkedList 底层是一个双向链表
                改查多：ArrayList  底层是可变数组
            不允许重复：Set
                无序：HashSet 底层是HashMap 底层是数组 + 链表 + 红黑树
                排序：TreeMap
                插入和取出顺序一致：LinkedHashSet
        3.双列即键值对：
            键无序：HashMap
            键排序：TreeMap
            键插入顺序和取出顺序一致：LinkedHashMap
            读取文件：Properties

 */
public class 集合 {
    public static void main(String[] args) {
        Cat cat = new Cat();
        cat.flay("猪", "飞起来");
    }
}

class Cat{
    public Cat(){}

    public <T, R> void flay(T t, R r){
        System.out.println(t);
        System.out.println(r);
    }
}